使用 Razor 语法 (C#)

您所在的位置:网站首页 razor hd 代工 使用 Razor 语法 (C#)

使用 Razor 语法 (C#)

#使用 Razor 语法 (C#) | 来源: 网络整理| 查看: 265

使用 Razor 语法 (C#) ASP.NET Web 编程简介 项目 09/23/2022

作者 Tom FitzMacken

本文概述了如何使用 Razor 语法通过 ASP.NET 网页 编程。 ASP.NET 是 Microsoft 在 Web 服务器上运行动态网页的技术。 本文重点介绍如何使用 C# 编程语言。

你将了解的内容:

使用 Razor 语法编程 ASP.NET 网页入门的前 8 个编程提示。 你需要的基本编程概念。 ASP.NET 服务器代码和 Razor 语法是什么。 软件版本 ASP.NET 网页 (Razor) 3

本教程也适用于 ASP.NET 网页 2。

前 8 个编程提示

本部分列出了在开始使用 Razor 语法编写 ASP.NET 服务器代码时绝对需要知道的一些提示。

注意

Razor 语法基于 C# 编程语言,这是最常用于 ASP.NET 网页的语言。 但是,Razor 语法还支持 Visual Basic 语言,以及你在 Visual Basic 中可以看到的所有内容。 有关详细信息,请参阅附录 Visual Basic 语言和语法。

可以在本文后面部分找到有关其中大多数编程技术的更多详细信息。

1. 使用 @ 字符向页面添加代码

字符 @ 启动内联表达式、单语句块和多语句块:

@{ var total = 7; } @{ var myMessage = "Hello World"; }

The value of your account is: @total

The value of myMessage is: @myMessage

@{ var greeting = "Welcome to our site!"; var weekDay = DateTime.Now.DayOfWeek; var greetingMessage = greeting + " Today is: " + weekDay; }

The greeting is: @greetingMessage

在浏览器中运行页面时,这些语句如下所示:

提示

HTML 编码

使用 @ 字符在页面中显示内容时,如前面的示例所示,ASP.NET HTML 编码输出。 这将替换保留的 HTML 字符 ((例如 & 和) ),这些代码使字符能够在网页中显示为字符,而不是解释为 HTML 标记或实体。 如果没有 HTML 编码,服务器代码的输出可能无法正确显示,并且可能会向安全风险公开页面。

如果你的目标是输出将标记呈现为标记 (的 HTML 标记,例如

段落或 强调文本) ,请参阅本文稍后在 代码块中组合文本、标记和代码 部分。

有关 使用窗体中的 HTML 编码的详细信息。

2. 将代码块括在大括号中

代码块包含一个或多个代码语句,并括在大括号中。

@{ var theMonth = DateTime.Now.Month; }

The numeric value of the current month: @theMonth

@{ var outsideTemp = 79; var weatherMessage = "Hello, it is " + outsideTemp + " degrees."; }

Today's weather: @weatherMessage

结果显示在浏览器中:

3. 在块内,使用分号结束每个代码语句

在代码块内,每个完整的代码语句都必须以分号结尾。 内联表达式不以分号结尾。

@{ var theMonth = DateTime.Now.Month; } @{ var outsideTemp = 79; var weatherMessage = "Hello, it is " + outsideTemp + " degrees."; }

Today's weather: @weatherMessage

4. 使用变量来存储值

可以将值存储在 变量中,包括字符串、数字和日期等。使用 var 关键字创建新变量。 You can insert variable values directly in a page using @.

@{ var welcomeMessage = "Welcome, new members!"; }

@welcomeMessage

@{ var year = DateTime.Now.Year; }

Welcome to our new members who joined in @year!

结果显示在浏览器中:

5. 用双引号将文本字符串值括起来

字符串是被视为文本的字符序列。 若要指定字符串,请将它括在双引号中:

@{ var myString = "This is a string literal"; }

如果要显示的字符串包含反斜杠字符 () \ 或双引号 () " ,请使用带有运算符前缀@的逐字字符串文本。 (C# 中,\字符具有特殊含义,除非使用逐字字符串文本。)

@{ var myFilePath = @"C:\MyFolder\"; }

The path is: @myFilePath

若要嵌入双引号,请使用逐字字符串文本并重复引号:

@{ var myQuote = @"The person said: ""Hello, today is Monday."""; }

@myQuote

下面是在页面中使用这两个示例的结果:

注意

请注意,该 @ 字符既用于标记 C# 中的逐字字符串文本,也用于在 ASP.NET 页中标记代码。

6.代码区分大小写

在 C# 中,关键字 (,vartrue) if 和变量名称区分大小写。 以下代码行创建两个不同的变量, lastName 以及 LastName.

@{ var lastName = "Smith"; var LastName = "Jones"; }

如果将变量声明为 var lastName = "Smith"; 变量并尝试引用页面中 @LastName的变量,则获取值 "Jones" 而不是 "Smith"。

注意

在 Visual Basic 中,关键字和变量 不 区分大小写。

7. 大部分编码都涉及对象

对象表示可以编程的内容:页面、文本框、文件、图像、Web 请求、电子邮件、客户记录 (数据库行) 等。对象具有描述其特征的属性以及您可以读取或更改的属性 — 文本框对象具有Text属性 (等) 、请求对象具有Url属性、电子邮件From具有属性,客户对象具有FirstName属性。 对象还具有可执行的“谓词”方法。 示例包括文件对象的方法、图像对象的SaveRotate方法和电子邮件对象的Send方法。

通常,你将使用对象 Request ,这为你提供了诸如文本框值的信息,如页面上 (窗体) 字段的值、发出请求的浏览器类型、页面的 URL、用户标识等。以下示例演示如何访问对象的属性 Request 以及如何调用 MapPath 对象的方法 Request ,从而提供服务器上的页面的绝对路径:

Requested URL Relative Path Full Path HTTP Request Type @Request.Url @Request.FilePath @Request.MapPath(Request.FilePath) @Request.RequestType

结果显示在浏览器中:

8. 可以编写用于做出决策的代码

动态网页的主要功能是,你可以根据条件确定要执行的操作。 执行此操作的最常见方法是语句 if (和可选 else 语句) 。

@{ var result = ""; if(IsPost) { result = "This page was posted using the Submit button."; } else { result = "This was the first request for this page."; } }

@result

该语句 if(IsPost) 是一种简写方式 if(IsPost == true)。 除了 if 语句,还有多种测试条件、重复代码块等方法,本文稍后将对此进行了介绍。

单击“ 提交 ”) 后,浏览器中显示的结果 (:

提示

HTTP GET 和 POST 方法和 IsPost 属性

用于网页的协议 (HTTP) 支持非常有限的方法, (谓词) 用于向服务器发出请求。 最常见的两个是 GET,用于读取页面,POST 用于提交页面。 通常,用户第一次请求页面时,将使用 GET 请求该页面。 如果用户填写表单,然后单击提交按钮,浏览器会向服务器发出 POST 请求。

在 Web 编程中,了解页面是作为 GET 还是 POST 请求页面,以便你知道如何处理页面,这通常很有用。 在 ASP.NET 网页中,可以使用IsPost该属性来查看请求是 GET 还是 POST。 如果请求为 POST,则 IsPost 属性将返回 true,你可以执行诸如读取窗体上文本框的值之类的操作。 你将看到许多示例演示如何根据页面的值 IsPost以不同的方式处理页面。

简单代码示例

此过程演示如何创建一个说明基本编程技术的页面。 在本示例中,创建一个页面,允许用户输入两个数字,然后添加它们并显示结果。

在编辑器中,创建新的文件并将其命名为 AddNumbers.cshtml。

将以下代码和标记复制到页面中,替换页面中已有的任何内容。

@{ var total = 0; var totalMessage = ""; if(IsPost) { // Retrieve the numbers that the user entered. var num1 = Request["text1"]; var num2 = Request["text2"]; // Convert the entered strings into integers numbers and add. total = num1.AsInt() + num2.AsInt(); totalMessage = "Total = " + total; } } Add Numbers body {background-color: beige; font-family: Verdana, Arial; margin: 50px; } form {padding: 10px; border-style: solid; width: 250px;}

Enter two whole numbers and then click Add.

First Number:

Second Number:

@totalMessage

以下是需要注意的一些事项:

该 @ 字符启动页面中的第一个代码块,该代码块位于页面底部附近的变量前面 totalMessage 。 页面顶部的块用大括号括起来。 在顶部的块中,所有行以分号结尾。 变量 total、 num1变量 num2和 totalMessage 存储多个数字和字符串。 分配给 totalMessage 变量的文本字符串值采用双引号。 由于代码区分大小写,因此当变量在页面底部附近使用时 totalMessage ,其名称必须与顶部的变量完全匹配。 该表达式 num1.AsInt() + num2.AsInt() 演示如何使用对象和方法。 AsInt每个变量上的方法将用户输入的字符串转换为数字 (整数) ,以便可以对它执行算术。 标记 包括属性 method="post" 。 这指定当用户单击 “添加”时,将使用 HTTP POST 方法将页面发送到服务器。 提交页面后, if(IsPost) 测试的计算结果为 true,条件代码运行,显示添加数字的结果。

保存页面并在浏览器中运行它。 (请确保在 “文件” 工作区中选择页面,然后运行它。) 输入两个整数,然后单击“ 添加 ”按钮。

基本编程概念

本文概述了 ASP.NET Web 编程。 这不是一个详尽的检查,只是一个快速浏览你最常使用的编程概念。 即便如此,它几乎涵盖了开始使用 ASP.NET 网页所需的一切。

但首先,有点技术背景。

Razor 语法、服务器代码和 ASP.NET

Razor 语法是一个简单的编程语法,用于在网页中嵌入基于服务器的代码。 在使用 Razor 语法的网页中,有两种内容:客户端内容和服务器代码。 客户端内容是网页中使用的内容:HTML 标记 (元素) 、样式信息(如 CSS)、某些客户端脚本(如 JavaScript)和纯文本。

使用 Razor 语法可将服务器代码添加到此客户端内容。 如果页面中包含服务器代码,则服务器会先运行该代码,然后再将页面发送到浏览器。 通过在服务器上运行,代码可以执行更复杂的任务,单独使用客户端内容(例如访问基于服务器的数据库)。 最重要的是,服务器代码可以动态创建客户端内容, 它可以在实时生成 HTML 标记或其他内容,然后将其发送到浏览器以及页面可能包含的任何静态 HTML。 从浏览器的角度来看,服务器代码生成的客户端内容与任何其他客户端内容没有什么不同。 如你所见,所需的服务器代码非常简单。

ASP.NET 包含 Razor 语法的网页具有 (.cshtml 或 .vbhtml) 的特殊文件扩展名。 服务器识别这些扩展,运行使用 Razor 语法标记的代码,然后将页面发送到浏览器。

ASP.NET 适合在哪里?

Razor 语法基于 Microsoft 称为 ASP.NET 的技术,而该技术又基于 Microsoft .NET Framework。 The.NET Framework 是 Microsoft 提供的大型综合性编程框架,用于开发几乎任何类型的计算机应用程序。 ASP.NET 是专为创建 Web 应用程序而设计的.NET Framework的一部分。 开发人员已使用 ASP.NET 创建世界上许多规模最大、流量最高的网站。 (每当在站点中看到文件扩展名 .aspx 作为 URL 的一部分时,就会知道站点是使用 ASP.NET.) 编写的

Razor 语法为你提供了 ASP.NET 的所有功能,但是,如果你是初学者,那么使用简化的语法会更容易学习,如果你是专家,则可以提高工作效率。 尽管此语法易于使用,但其与 ASP.NET 的家庭关系和.NET Framework意味着,随着网站变得更加复杂,你拥有更大的框架的强大功能。

提示

类和实例

ASP.NET 服务器代码使用对象,这些对象又基于类的想法而构建。 类是对象的定义或模板。 例如,应用程序可能包含定义 Customer 任何客户对象所需的属性和方法的类。

当应用程序需要处理实际客户信息时,它会创建 (实例或实例 化客户对象) 。 每个客户都是类的 Customer 单独实例。 每个实例都支持相同的属性和方法,但每个实例的属性值通常不同,因为每个客户对象都是唯一的。 在一个客户对象中,该 LastName 属性可能是“Smith”;在另一个客户对象中,该 LastName 属性可能是“Jones”。

同样,网站中的任何单个网页都是 Page 类实例的对象 Page 。 页面上的按钮是一个 Button 对象,它是类的 Button 实例,等等。 每个实例都有自己的特征,但它们都基于对象类定义中指定的内容。

基本语法

前面介绍了如何创建 ASP.NET 网页页的基本示例,以及如何将服务器代码添加到 HTML 标记。 在这里,你将了解使用 Razor 语法编写 ASP.NET 服务器代码的基础知识,即编程语言规则。

如果你遇到编程 (,尤其是使用 C、C++、C#、Visual Basic 或 JavaScript) 时,此处阅读的大部分内容都会很熟悉。 你可能需要只熟悉如何将服务器代码添加到 .cshtml 文件中的标记。

组合代码块中的文本、标记和代码

在服务器代码块中,通常需要输出文本或标记 (或两者) 到页面。 如果服务器代码块包含的文本不是代码,而应该按原样呈现,则 ASP.NET 需要能够区分该文本与代码。 有多种方法可实现此目的。

将文本括在 HTML 元素中,例如

或 :

@if(IsPost) { // This line has all content between matched

tags.

Hello, the time is @DateTime.Now and this page is a postback!

} else { // All content between matched tags, followed by server code.

Hello stranger, today is:

@DateTime.Now }

HTML 元素可以包含文本、其他 HTML 元素和服务器代码表达式。 例如,ASP.NET 看到打开的 HTML 标记 ((例如

,) ),它会呈现元素及其内容等所有内容,并按原样解析服务器代码表达式。

使用 @: 运算符或 元素。 输出 @: 包含纯文本或不匹配 HTML 标记的单个内容行;该 元素将包含多行以输出。 当不想将 HTML 元素呈现为输出的一部分时,这些选项非常有用。

@if(IsPost) { // Plain text followed by an unmatched HTML tag and server code. @: The time is: @DateTime.Now // Server code and then plain text, matched tags, and more text. @DateTime.Now @:is the current time. }

如果想要输出多行文本或不匹配的 HTML 标记,可以在每行前面加上 @:,也可以将行括在元素 中。 与 @: 运算符一样, 标记由 ASP.NET 用于标识文本内容,并且永远不会在页面输出中呈现。

@if(IsPost) { // Repeat the previous example, but use tags. The time is: @DateTime.Now @DateTime.Now is the current time. } @{ var minTemp = 75; It is the month of @DateTime.Now.ToString("MMMM"), and it's a great day!

You can go swimming if it's at least @minTemp degrees.

}

第一个示例重复上一个示例,但使用一对 标记将文本括起来呈现。 第二个示例中, 标记 包含三行,其中所有行都有一些未约束的文本和不匹配的 HTML 标记 () ,以及服务器代码和匹配的 HTML 标记。 同样,还可以分别在每行前面加上 @: 运算符;无论哪种方式都有效。

注意

如果输出此部分所示的文本(使用 HTML 元素、 @: 运算符或 元素),ASP.NET 不会对输出进行 HTML 编码。 (如前所述,ASP.NET 对前面 @所述的服务器代码表达式和服务器代码块的输出进行编码,但在本部分所述的特殊情况下除外。)

空格

语句中的额外空格 (和字符串文本外部) 不会影响语句:

@{ var lastName = "Smith"; }

语句中的换行符对语句没有影响,你可以包装语句以便可读性。 下列语句相同:

@{ var theName = "Smith"; } @{ var personName = "Smith" ; }

但是,不能在字符串文本中间换行。 以下示例无法工作:

@{ var test = "This is a long string"; } // Does not work!

若要组合一个长字符串,该字符串包装到多个行,如上面的代码,有两个选项。 可以使用串联运算符 (+) ,本文稍后将看到该运算符。 还可以使用 @ 字符创建逐字字符串文本,如本文前面所述。 可以跨行中断逐字字符串文本:

@{ var longString = @"This is a long string"; } 代码 (和标记) 注释

批注使你可以为自己或其他人留下笔记。 它们还允许禁用 (注释掉) 不想运行的代码或标记部分,但希望暂时保留在页面中。

Razor 代码和 HTML 标记有不同的注释语法。 与所有 Razor 代码一样,Razor 注释会在 (进行处理,然后在将页面发送到浏览器之前在服务器上删除) 。 因此,使用 Razor 注释语法可以将注释放入代码 (甚至插入标记) ,你可以在编辑文件时看到,但用户甚至看不到页面源。

对于 ASP.NET Razor 注释,请使用它开头 @* 并结束注释 *@。 批注可以位于一行或多行上:

@* A one-line code comment. *@ @* This is a multiline code comment. It can continue for any number of lines. *@

下面是代码块中的注释:

@{ @* This is a comment. *@ var theVar = 17; }

下面是相同的代码块,其中注释掉了代码行,以便它不会运行:

@{ @* This is a comment. *@ @* var theVar = 17; *@ }

在代码块中,作为使用 Razor 注释语法的替代方法,可以使用所使用的编程语言的注释语法,例如 C#:

@{ // This is a comment. var myVar = 17; /* This is a multi-line comment that uses C# commenting syntax. */ }

在 C# 中,单行注释前面 // 有字符,多行注释以字符开头 /* 和结尾 */。 (与 Razor 注释一样,C# 注释不会呈现到 browser.)

对于标记,如你所知,可以创建 HTML 注释:

HTML 注释以字符开头 。 可以使用 HTML 批注来环绕文本,还可以将想要保留在页面中但不想呈现的任何 HTML 标记括起来。 此 HTML 注释将隐藏标记的整个内容及其包含的文本:

与 Razor 注释不同,HTML 注释 将 呈现到页面,用户可以通过查看页面源来查看它们。

Razor 对 C# 嵌套块有限制。 有关详细信息,请参阅 命名 C# 变量和嵌套块生成中断的代码

变量

变量是用于存储数据的命名对象。 可以命名任何变量,但名称必须以字母字符开头,并且不能包含空格或保留字符。

变量和数据类型

变量可以具有特定的数据类型,该数据类型指示变量中存储的数据类型。 可以具有字符串变量,这些字符串变量存储字符串值 (如“Hello world”) 、存储整数值的整数变量 (如 3 或 79) ,以及以各种格式存储日期值的日期变量, (如 2012 年 4 月 12 日或 2009 年 3 月) 。 可以使用许多其他数据类型。

但是,通常不必为变量指定类型。 大多数情况下,ASP.NET 可以根据变量中的数据的使用方式找出类型。 (有时必须指定类型;你将看到示例,其中为 true.)

如果不想指定 var 类型) 或使用类型的名称,请使用关键字 (声明变量:

@{ // Assigning a string to a variable. var greeting = "Welcome!"; // Assigning a number to a variable. var theCount = 3; // Assigning an expression to a variable. var monthlyTotal = theCount + 5; // Assigning a date value to a variable. var today = DateTime.Today; // Assigning the current page's URL to a variable. var myPath = this.Request.Url; // Declaring variables using explicit data types. string name = "Joe"; int count = 5; DateTime tomorrow = DateTime.Now.AddDays(1); }

以下示例演示了网页中变量的一些典型用法:

@{ // Embedding the value of a variable into HTML markup.

@greeting, friends!

// Using variables as part of an inline expression.

The predicted annual total is: @( monthlyTotal * 12)

// Displaying the page URL with a variable.

The URL to this page is: @myPath

}

如果在页面中合并了前面的示例,则会看到此内容显示在浏览器中:

转换和测试数据类型

虽然 ASP.NET 通常可以自动确定数据类型,但有时无法确定数据类型。 因此,可能需要通过执行显式转换来帮助 ASP.NET。 即使无需转换类型,有时测试查看可能正在使用的数据类型也很有帮助。

最常见的情况是,必须将字符串转换为另一种类型,例如整数或日期。 以下示例演示了必须将字符串转换为数字的典型情况。

@{ var total = 0; if(IsPost) { // Retrieve the numbers that the user entered. var num1 = Request["text1"]; var num2 = Request["text2"]; // Convert the entered strings into integers numbers and add. total = num1.AsInt() + num2.AsInt(); } }

作为规则,用户输入以字符串的形式出现。 即使你已提示用户输入数字,即使他们输入了数字,提交用户输入并在代码中读取该数字,数据也采用字符串格式。 因此,必须将字符串转换为数字。 在此示例中,如果尝试在不转换值的情况下对值执行算术,则会出现以下错误结果,因为 ASP.NET 不能添加两个字符串:

无法隐式将类型“string”转换为“int”。

若要将值转换为整数,请调用 AsInt 该方法。 如果转换成功,则可以添加数字。

下表列出了变量的一些常见转换和测试方法。

方法

说明

示例

AsInt(), IsInt()

将表示整数 ((如“593”) )的字符串转换为整数。

var myIntNumber = 0; var myStringNum = "539"; if(myStringNum.IsInt()==true){ myIntNumber = myStringNum.AsInt(); }

AsBool(), IsBool()

将字符串(如“true”或“false”)转换为布尔类型。

var myStringBool = "True"; var myVar = myStringBool.AsBool();

AsFloat(), IsFloat()

将具有十进制值的字符串(如“1.3”或“7.439”)转换为浮点数。

var myStringFloat = "41.432895"; var myFloatNum = myStringFloat.AsFloat();

AsDecimal(), IsDecimal()

将具有十进制值的字符串(如“1.3”或“7.439”)转换为十进制数。 (在 ASP.NET 中,小数比浮点数更精确。)

var myStringDec = "10317.425"; var myDecNum = myStringDec.AsDecimal();

AsDateTime(), IsDateTime()

将表示日期和时间值的字符串转换为 ASP.NET DateTime 类型。

var myDateString = "12/27/2012"; var newDate = myDateString.AsDateTime();

ToString()

将任何其他数据类型转换为字符串。

int num1 = 17; int num2 = 76; // myString is set to 1776 string myString = num1.ToString() + num2.ToString(); 运算符

运算符是一个关键字或字符,指示 ASP.NET 表达式中要执行的命令类型。 C# 语言 (和基于它的 Razor 语法) 支持许多运算符,但只需识别几个运算符即可开始使用。 下表汇总了最常见的运算符。

“运算符”

说明

示例

+ - * /

数值表达式中使用的数学运算符。

@(5 + 13) @{ var netWorth = 150000; } @{ var newTotal = netWorth * 2; } @(newTotal / 2)

=

赋值。 将语句右侧的值分配给左侧的对象。

var age = 17;

==

相等。 如果值相等,则返回 true 。 (请注意运算符与 == operator.) 之间的区别=

var myNum = 15; if (myNum == 15) { // Do something. }

!=

不相等。 如果值不相等,则返回 true 。

var theNum = 13; if (theNum != 15) { // Do something. }

< > =

小于、大于、小于或等于以及大于或等于。

if (2 < 3) { // Do something. } var currentCount = 12; if(currentCount >= 12) { // Do something. }

+

连接,用于联接字符串。 ASP.NET 知道此运算符与基于表达式数据类型的加法运算符之间的差异。

// The displayed result is "abcdef". @("abc" + "def")

+= -=

递增和递减运算符,分别从变量中添加和减去 1 () 。

int theCount = 0; theCount += 1; // Adds 1 to count

.

点。 用于区分对象及其属性和方法。

var myUrl = Request.Url; var count = Request["Count"].AsInt();

()

括号。 用于对表达式进行分组并将参数传递给方法。

@(3 + 7) @Request.MapPath(Request.FilePath);

[]

括号。 用于访问数组或集合中的值。

var income = Request["AnnualIncome"];

!

非。 将 true 值反转为 false 反之。 通常用作一种速记方法来测试 false (,即不 true) 。

bool taskCompleted = false; // Processing. if(!taskCompleted) { // Continue processing }

&& ||

逻辑 AND 和 OR,用于将条件链接在一起。

bool myTaskCompleted = false; int totalCount = 0; // Processing. if(!myTaskCompleted && totalCount < 12) { // Continue processing. }

在代码中使用文件和文件夹路径

通常可在代码中使用文件和文件夹路径。 下面是网站的物理文件夹结构示例,因为它可能显示在开发计算机上:

C:\WebSites\MyWebSite default.cshtml datafile.txt \images Logo.jpg \styles Styles.css

下面是有关 URL 和路径的一些基本详细信息:

URL 以域名 () 或服务器名称 (http://www.example.comhttp://localhost开头, http://mycomputer) 。 URL 对应于主计算机上的物理路径。 例如, http://myserver 可能对应于服务器上的文件夹 C:\websites\mywebsite 。 虚拟路径是简写的,表示代码中的路径,而无需指定完整路径。 它包括紧随域或服务器名称的 URL 部分。 使用虚拟路径时,可以将代码移动到其他域或服务器,而无需更新路径。

下面是一个示例,可帮助你了解差异:

完整 URL http://mycompanyserver/humanresources/CompanyPolicy.htm 服务器名称 mycompanyserver 虚拟路径 /humanresources/CompanyPolicy.htm 物理路径 C:\mywebsites\humanresources\CompanyPolicy.htm

虚拟根是 /,就像 C: 驱动器的根目录一样。 (虚拟文件夹路径始终使用正斜杠。) 文件夹的虚拟路径不必与物理文件夹同名;它可以是别名。 (在生产服务器上,虚拟路径很少与确切的物理路径匹配。)

在代码中使用文件和文件夹时,有时需要引用物理路径和虚拟路径,具体取决于所使用的对象。 ASP.NET 提供了这些工具,用于在代码中使用文件和文件夹路径:该方法 Server.MapPath 和 ~ 运算符和 Href 方法。

将虚拟路径转换为物理路径:Server.MapPath 方法

该方法 Server.MapPath 将虚拟路径 ((如 /default.cshtml) )转换为绝对物理路径 (,如 C:\WebSites\MyWebSiteFolder\default.cshtml) 。 每当需要完整的物理路径时,即可使用此方法。 典型的示例是在 Web 服务器上读取或写入文本文件或图像文件时。

通常不知道托管站点服务器上的站点绝对物理路径,因此此方法可以将你知道的路径(虚拟路径)转换为服务器上的相应路径。 将虚拟路径传递给文件或文件夹到该方法,并返回物理路径:

@{ var dataFilePath = "~/dataFile.txt"; }

@Server.MapPath(dataFilePath)

引用虚拟根:~ 运算符和 Href 方法

在 .cshtml 或 .vbhtml 文件中,可以使用运算符引用虚拟根路径 ~ 。 这是非常方便的,因为你可以在网站中移动页面,并且它们包含的任何链接都不会损坏。 如果网站移动到其他位置,也很方便。 下面是一些示例:

@{ var myImagesFolder = "~/images"; var myStyleSheet = "~/styles/StyleSheet.css"; }

如果网站是 http://myserver/myapp,下面是在页面运行时 ASP.NET 如何处理这些路径:

myImagesFolder: http://myserver/myapp/images myStyleSheet : http://myserver/myapp/styles/Stylesheet.css

(实际上不会将这些路径视为变量的值,但 ASP.NET 将路径视为它们是什么。)

可以在 ~ 服务器代码 (中使用运算符,如上述) 和标记,如下所示:

Home

在标记中,使用 ~ 运算符创建指向图像文件、其他网页和 CSS 文件等资源的路径。 当页面运行时,ASP.NET 查看页面 (代码和标记) 并解析对相应路径的所有 ~ 引用。

条件逻辑和循环

ASP.NET 服务器代码允许你根据条件执行任务,并编写代码,该代码重复语句的特定次数 (,即运行循环的代码) 。

测试条件

若要测试简单条件,请使用 if 语句,该语句根据指定的测试返回 true 或 false:

@{ var showToday = true; if(showToday) { @DateTime.Today; } }

关键字 if 启动块。 实际测试 (条件) 位于括号中,并返回 true 或 false。 如果测试为 true,则运行的语句括在大括号中。 语句 if 可以包含一个 else 块,该块指定条件为 false 时要运行的语句:

@{ var showToday = false; if(showToday) { @DateTime.Today; } else { Sorry! } }

可以使用块添加多个条件 else if :

@{ var theBalance = 4.99; if(theBalance == 0) {

You have a zero balance.

} else if (theBalance > 0 && theBalance


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3